This invention relates to an acceleration/deceleration circuit and, more particularly, to an acceleration/deceleration circuit well-suited for driving, e.g., a moveable element of a machine tool or a hand of a robot.
In a control unit for controlling travel along the axes of a machine tool, a robot or the like, acceleration and deceleration generally are carried out so that the mechanical system will not be subjected to shock or vibration when starting and slowing down axial travel. Two of such acceleration/deceleration methods, described hereinbelow, are available. Though the case to be described relates to linear interpolation along two, i.e., X and Y axes, operation is entirely the same for cases where there are more than two axes and for circular interpolation, etc. Further, we shall let T represent a sampling period, F a commanded feed velocity, X a traveling distance along the X axis, Y a traveling distance along the Y axis, and S (=.sqroot.X.sup.2 +Y.sup.2) a traveling distance along a tangential direction.
The first acceleration/deceleration method comprises performing coarse interpolation in a coarse interpolator by obtaining a minute traveling distance component .sub..DELTA. S using the operation .sub..DELTA. S=F.T performed every sampling period T, and by obtaining traveling distance components .sub..DELTA. X, .sub..DELTA. Y along the X and Y axes using .sub..DELTA. S and the following equations: ##EQU1## These calulations are followed by performing acceleration and deceleration, with independent delays along the axes with respect to .sub..DELTA. X and .sub..DELTA. Y. FIG. 1 is a block diagram of a control apparatus to which the first acceleration/deceleration method is applied. A coarse interpolator 101 uses the feed velocity F and the traveling distances X, Y along the X and Y axes to compute coarse interpolation data .sub..DELTA. X, .sub..DELTA. Y from Eqs. (1) and (2), and applies the data .sub..DELTA. X, .sub..DELTA. Y to pulse distributors 102X, 102Y, respectively. The pulse distributors 102X, 102Y, which serve as fine interpolators, perform a pulse distributing operation based on the coarse interpolation data .sub..DELTA. X, .sub..DELTA. Y to generate distributed pulses XP, YP the number of pulses generated corresponds .sub..DELTA. X, .sub..DELTA. Y during one sampling interval.
The distributed pulses XP, YP are applied to respective acceleration/deceleration circuits 103X, 103Y, disclosed in the specification of U.S. Pat. No. 3,838,325. Each of the acceleration/deceleration circuits 103X, 103Y has the construction shown in FIG. 3. This assumes that each performs acceleration and deceleration in exponential fashion, as depicted in FIG. 2, during rise time and decay time, respectively. In FIG. 3, numeral 3a denotes a synthesizing circuit for combining the distributed pulses XP (YP) produced by the pulse distributor 102X (102Y), and output pulses XCP (YCP) from the acceleration/deceleration circuit 103X (103Y). Numeral 3b denotes a register for storing the pulses produced by the synthesizing circuit 3a. Numeral 3c designates an accumulator, and 3d denotes an adder for adding the contents E of the register 3b and the contents of the accumulator 3c each time a pulse P is produced at a certain pulse rate Fc. The result of the adding operation is stored in the accumulator 3c. With F as the pulse rate of the distributed pulses XP, and with Fo as the pulse rate of the output pulses XCP, we having the following equations: ##EQU2## where n represents the number of bits of the accumulator 3c. Equation change (3) represents the increment of the register 3b per time unit, and Eq. (4) expresses the number of carry pulses (output pulses XCP) produced by the accumulator 3c per time unit. Obtaining the output pulse rate Fo from Eqs. (3) and (4) gives us the following: EQU Fo=F[1-exp (-kt)] (5)
where k is a constant. The output pulse rate Fo is accelerated exponentially at start-up and decelerated exponentially when the movable object is brought to rest.
Returning to FIG. 1, the output pulses XCP, YCP accelerated and decelerated exponentially by the acceleration/deceleration circuits 103X, 103Y are applied to servo circuits 104X, 104Y for driving servomotors 105X, 105Y, respectively. FIG. 4 illustrates the manner in which coarse interpolation is performed by the coarse interpolator 101.
The second acceleration/deceleration method involves performing acceleration and deceleration by applying acceleration and deceleration to the feed velocity input of an interpolator. FIG. 5 is a block diagram for practicing the second acceleration/deceleration method, and FIG. 6 illustrates the manner in which travel is performed. In FIG. 5, an acceleration/deceleration circuit 201 has a construction substantially the same as that shown in FIG. 3, the output pulses Fj of the circuit being accelerated and decelerated exponentially during the rise and decay of the feed velocity F, respectively. It should be noted that deceleration is performed automatically when the pulses indicative of the feed velocity F cease arriving. The time at which deceleration starts (the time at which input of pulses indicating the feed velocity F ceases) is the time at which a deceleration distance (already known) commensurate with the feed velocity F becomes equal to a remaining traveling distance Rm. An interpolator 202 performs a pulse distributing operation based on traveling distance data X, Y each time the output pulse Fj is generated by the acceleration/deceleration circuit 201. Based on this operation distributed pulses XP, YP are generated to drive servomotors 105X, 105Y through servo circuits 104X, 104Y. As a result, the output pulse rate (the traveling distance over one sampling interval) of the interpolator 202 is gradually increased and decreased at starting and stopping, points respectively, as illustrated in FIG. 6.
The first and second acceleration/deceleration methods are performed as described above. Of these two methods, the first is advantageous because the interpolator and acceleration/deceleration circuits have simple constructions. This is because the first method accomplishes acceleration/deceleration control entirely independently of interpolation, with acceleration and deceleration merely being performed when interpolation starts and ends, respectively. However, since there are independent delays along the respective axes, the first method is disadvantageous because the path which results from acceleration and deceleration develops an error, circular interpolation is performed as shown in FIG. 7. In FIG. 7, CCT represents a commanded circle, and ACT denotes the path following acceleration and deceleration. The radial error .sub..DELTA. R in FIG. 7 may be approximated by the following: ##EQU3## where R represents the radius, .tau. a time constant and F a commanded velocity.
With the second acceleration/deceleration method, an advantage gained because there is absolutely no path error attributed to acceleration/deceleration control. However, considering that there is a change in the feed velocity, due to applying an override to the commanded feed velocity F, in order to end deceleration precisely at the given end point of travel, deceleration distance required in accordance with the feed velocity from moment to moment, as well as traveling distance remaining up to the end, must be known at all times. Therefore, the second method is disadvantageous because complex computations are necessary, meaning that the interpolator and acceleration/deceleration circuit are extremely complicated.